package drazing;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;

/**
 * Diálogo inicial del juego (MAIN MENU)
 * @author xcubo
 */
public class WellcomeDiag extends JDialog
{
    protected int wid = 333, hei = 450;
    private int left, up;
    protected Dimension dim;
    private PanelImagenFondo pan;
    protected BufferedImage bim;

    protected boolean fs;

    public WellcomeDiag(Dimension di, String version)
    {
        dim = di;
        left= (dim.width/2) - (wid/2);
        up  = (dim.height/2)- (hei/2);
        fs = true;
        
        try {bim = ImageIO.read(getClass().getResource("../resources/img/logo/Pantallazo7.png"));}
        catch (IOException e) {}

        pan = new PanelImagenFondo(this, version);
        getContentPane().add(pan);

        addWindowListener(new WindowAdapter()
                {
                    @Override public void windowClosing(WindowEvent e) {
                            System.exit(0);
                        }
                });

        setLocation(left, up);
        setSize(wid, hei);
        setAlwaysOnTop(true);
        setResizable(false);
        setModal(true);
        setUndecorated(true);
        setVisible(true);
        
    }
}

class ImagenFondo extends JComponent
{
    // Imagen que se va a usar de fondo
    private Image imagen;
    
    // Si se debe o no estirar la imagen para que ocupe todo el panel */
    private boolean estirar=true;

    // Posicion para la imagen */
    private int posicionX=0;
    private int posicionY=0;

    /** Instancia esta clase, guardandose la imagen que se le pasa para que
     * sea la imagen de fondo.
     * @param imagen Imagen deseada para el fondo
     */
    public ImagenFondo (Image imagen)
    {
        this.imagen=imagen;
    }

    /** Redefinición del método paint(). Dibuja la imagen de fondo y luego
     * llama al método padre con el mismo nombre.
     * @param g Graphics para dibujar
     */
    @Override public void paint(Graphics g)
    {
        if (imagen != null)
            if (isEstirar())
                g.drawImage(imagen,posicionX,posicionY,getWidth(),getHeight(),this);
            else
                g.drawImage(imagen,posicionX,posicionY,this);
        super.paint(g);
    }

    /** Devuelve si se estira la imagen o no para ocupar todo el panel. */
    public boolean isEstirar()
    {
        return estirar;
    }
}

class PanelImagenFondo extends ImagenFondo
{
    private JButton botonPl;
    private JButton botonRe;
    private JButton botonAb;
    private JButton botonEx;
    private JCheckBox fsem;

    /**
     * Instancia un JFrame y un PanelConImagenDeFondo.
     * @param imagen
     */
    public PanelImagenFondo (final WellcomeDiag v, String ver)
    {
        super (v.bim.getScaledInstance(v.wid,v.hei,Image.SCALE_SMOOTH));

        botonPl = new JButton("Jugar");
        botonPl.addActionListener(new ActionListener()
                                    {
                                            @Override public void actionPerformed( ActionEvent evento )
                                            {
                                                v.dispose();
                                                System.out.println("Set Up your Car!");
                                            }
                                    });
        botonRe = new JButton("Top 10");
        botonRe.addActionListener(new ActionListener()
                                    {
                                            @Override public void actionPerformed( ActionEvent evento )
                                            {
                                                StatsDiag statsDiag = new StatsDiag(v.dim, null);
                                            }
                                    });
        botonAb = new JButton("Acerca de...");
        botonAb.addActionListener(new ActionListener()
                                    {
                                            @Override public void actionPerformed( ActionEvent evento )
                                            {
                                                AboutDiag aboutDiag = new AboutDiag(new Dimension(v.wid, v.hei));
                                            }
                                    });
        botonEx = new JButton("Salir");
        botonEx.addActionListener(new ActionListener()
                                    {
                                            @Override public void actionPerformed( ActionEvent evento )
                                            {
                                                System.exit(0);
                                            }
                                    });

        JPanel botonera = new JPanel();
        botonera.setLayout(new GridBagLayout());
        botonera.setOpaque(false);

        GridBagConstraints constraints = new GridBagConstraints();
        constraints.fill = GridBagConstraints.HORIZONTAL;

        constraints.gridx = 0; 
        constraints.gridy = 0; 
        constraints.gridwidth = 1;
        constraints.gridheight = 1; 
        botonera.add(botonPl, constraints);

        constraints.gridy = 1; 
        botonera.add(botonRe, constraints);

        constraints.gridy = 2;
        botonera.add(botonAb, constraints);

        constraints.gridy = 3; 
        botonera.add(botonEx, constraints);

        fsem = new JCheckBox("Pantalla Completa");
        fsem.setSelected(true);
        fsem.addActionListener(new ActionListener()
                                    {
                                            @Override public void actionPerformed( ActionEvent evento )
                                            {
                                                v.fs = !v.fs;
                                            }
                                    });

        setLayout(new BorderLayout());

        add(botonera, BorderLayout.LINE_END);
        //add(fsem, BorderLayout.SOUTH);
        JLabel version = new JLabel("version "+ver);
        Font f = new Font("Arial", Font.BOLD, 12);
        version.setFont(f);
        version.setBackground(Color.BLACK);
        version.setForeground(Color.YELLOW);
        add (version,BorderLayout.SOUTH);
    }
}